#include "myaction.h"
#include <QSplitter>
#include <QLabel>

MyAction::MyAction(QObject* parent) : QWidgetAction(parent)
{
    // 创建行编辑器
    lineEdit = new QLineEdit(); // 不能写父节点是 this(我把它加到什么地方，那么就会有对应的父窗口，就不用管它的内存问题了)
    // 连接信号和槽，触发回车信号和发送文本的槽函数关联(输入完之后会输入回车)
    connect(lineEdit, &QLineEdit::returnPressed, this, &MyAction::sendTextSlot);
}

QWidget *MyAction::createWidget(QWidget *parent) // 把返回的内容设置到菜单项中，来达到自定义菜单栏的效果
{
    // parent 不继承 QMenu，并且不继承 QToolBar 的话就直接返回就可以了
    if(!(parent->inherits("QMenu")) && !(parent->inherits("QToolbar"))){
        return 0;
    }

    QSplitter* splitter = new QSplitter(parent);
    QLabel* label = new QLabel;
    label->setText(tr("插入文本"));
    splitter->addWidget(label);
    splitter->addWidget(lineEdit);
    return splitter;
}

void MyAction::sendTextSlot()
{
    // 下面的 getText 信号可能不识别 ==> 因为我们这个自定义的 class MyAction 创建的时候是没有点继承什么的，也是没有加入什么的，所以使用的时候，可能得加上 Q_OBJECT
    // 点左下角的小锤子，可能还是有问题的哦，因为可能会有残留的问题。 ==> 在项目"paart09-MainWindow"右键选择"重新构建"一下项目就可以了哦
    emit getTextSignal(lineEdit->text()); // 把输入到 lineEdit 中的内容发送出去
    lineEdit->clear(); // 数据发送出去了，就得清空的哦
}
